home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Timer.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  2.3 KB  |  97 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Timer.mod
  3.  
  4.      Contains:    Sound.Time Manager interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE Timer;
  23.  
  24. IMPORT SYSTEM, Types, OSUtils;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. CONST
  31. (* high bit of qType is set if task is active *)
  32.     kTMTaskActive*                = ASH(1,15);
  33.  
  34.     
  35. TYPE
  36.     TMTaskPtr* = POINTER TO TMTask;
  37.  
  38.     (*
  39.         TimerProcPtr uses register based parameters on the 68k and cannot
  40.         be written in or called from a high-level language without the help of
  41.         mixed mode or assembly glue.
  42.  
  43.         In:
  44.          => tmTaskPtr       A1.L
  45.     *)
  46.     TimerProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE Timer*(tmTaskPtr: Timer.TMTaskPtr); *)
  47.     TimerUPP* = Types.UniversalProcPtr;
  48.  
  49.     TMTask* = RECORD
  50.         qLink*:                    OSUtils.QElemPtr;
  51.         qType*:                    INTEGER;
  52.         tmAddr*:                    TimerUPP;
  53.         tmCount*:                LONGINT;
  54.         tmWakeUp*:                LONGINT;
  55.         tmReserved*:                LONGINT;
  56.     END;
  57.  
  58.  
  59. PROCEDURE InsTime*(tmTaskPtr: OSUtils.QElemPtr);
  60.     (*$IF NOT GENERATINGCFM*)
  61.     INLINE PASCAL $205F, $A058;
  62.     (*$END*)
  63. PROCEDURE InsXTime*(tmTaskPtr: OSUtils.QElemPtr);
  64.     (*$IF NOT GENERATINGCFM*)
  65.     INLINE PASCAL $205F, $A458;
  66.     (*$END*)
  67. PROCEDURE PrimeTime*(tmTaskPtr: OSUtils.QElemPtr; count: LONGINT);
  68.     (*$IF NOT GENERATINGCFM*)
  69.     INLINE PASCAL $201F, $205F, $A05A;
  70.     (*$END*)
  71. PROCEDURE RmvTime*(tmTaskPtr: OSUtils.QElemPtr);
  72.     (*$IF NOT GENERATINGCFM*)
  73.     INLINE PASCAL $205F, $A059;
  74.     (*$END*)
  75. PROCEDURE Microseconds*(VAR microTickCount: Types.UnsignedWide);
  76.     (*$IF NOT GENERATINGCFM*)
  77.     INLINE PASCAL $A193, $225F, $22C8, $2280;
  78.     (*$END*)
  79. CONST
  80.     uppTimerProcInfo* = $0000B802; (* Register PROCEDURE (4 bytes in A1); *)
  81.  
  82. PROCEDURE NewTimerProc*(userRoutine: TimerProcPtr): TimerUPP;
  83.     (*$IF NOT GENERATINGCFM *)
  84.     INLINE PASCAL $2E9F;
  85.     (*$END*)
  86.  
  87. PROCEDURE CallTimerProc*(tmTaskPtr: TMTaskPtr; userRoutine: TimerUPP);
  88.     (*$IF NOT GENERATINGCFM*)
  89.     INLINE PASCAL ; (*••*)
  90.     (*To be implemented:  Glue to move parameters into registers.*)
  91.     (*$END*)
  92.  
  93. (* $ALIGN RESET*)
  94. (* $POP*)
  95.  
  96.  END Timer.
  97.